package com.power.sifa.approve.service;


import com.plf.common.exception.BusinessException;
import com.power.sifa.approve.model.Apl_arrive_detail;
import com.power.sifa.approve.model.Apl_main;
import com.power.sifa.approve.model.pageInfo.Apl_arrive_detailPageInfo;
import com.power.sifa.approve.model.pojo.vo.DocumentTreeVO;
import com.power.sifa.approve.model.pojo.vo.ReviewDetailVO;
import org.springframework.data.domain.Page;

import java.io.Serializable;
import java.util.List;

/**
 *  送达记录详情业务层
 */
public interface Apl_arrive_detailService {

    /**
     *  根据id获取送达记录详情对象
     */
    Apl_arrive_detail getById(Serializable id);

    /**
     *  根据传入送达记录详情对象进行新增或更新操作
     */
    void saveOrUpdate(Apl_arrive_detail apl_arrive_detail);

    /**
     *  根据id删除送达记录详情
     */
    void removeById(Serializable id);

    /**
     *  根据传入条件查询送达记录详情分页结果
     */
    Page<Apl_arrive_detail> findAll(Apl_arrive_detailPageInfo pageInfo);

    /**
     * 查询全部送达记录详情
     */
    List<Apl_arrive_detail> findAll();

     /**
     *  根据id批量删除送达记录详情
     */
    void removeByIds(List<Integer> list);

     /**
     *  批量保存送达记录详情
     */
    void saveAll(List<Apl_arrive_detail> list);


    /**
     * 通过applyid查询送达的相关记录
     * @param applyIds
     * @return
     */
    List<Apl_arrive_detail> findDetailByApplyIds(List<String> applyIds);


    /**
     * 暂存送达数据
     * @param details
     */
    void saveTemp(List<Apl_arrive_detail> details);


    /**
     * 送达数据发送
     * @param details
     */
    void saveSend(List<Apl_arrive_detail> details, String sendUserId, String sendUserName) throws BusinessException;


    /**
     * 新建的送达详情保存
     * @param detail
     */
    void saveNewDetail(Apl_arrive_detail detail);


    /**
     *
     * @param applyid
     * @return
     */
    ReviewDetailVO getReviewDetailByApplyid(String applyid);


    /**
     * 通过applyid来查询对应的文件树形结构
     * @param applyid
     * @return
     */
    List<DocumentTreeVO> getDocumentTree(String applyid);

    /**
     * 电子送达发送连接
     * @param detail
     */
    void sendMessage(Apl_arrive_detail detail);



    /**
     * 赣政通代办提醒
     */
    void sendDiTodo(Apl_main faMainObj, Integer materialType,String userId, String userName);

    /**
     * 创建保存一条送达通知
     * @param applyid
     * @param code 案号
     * @param days 告警天数
     * @param content 通知内容
     * @param msgType 消息类型 {@link com.power.sifa.base.model.enumeration.Tp_noticemsg}
     * @return
     */
    void createSaveNotice(String applyid, String code, String userid, Integer days, String content, Integer mattype, Integer msgType);



    /**
     * 根据userid查询待处理的通知
     * @param userid
     * @return
     */
    List<Apl_arrive_detail> getByUserid(String userid);

    /**
     * 根据applyid查询最近一条待处理的通知
     * @param userid
     * @return
     */
    Apl_arrive_detail getByApplyid(String userid);

    /**
     * 根据id删除一条送达记录信息
     * @param id
     * @return
     */
    void deleteDetailById(String id);
}
